package com.itlong.cloud.property.service;

import com.itlong.cloud.POJO.DTO.property.PropertyParkCouponGetPageDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyParkCouponSaveDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyParkCouponUpdateDTO;
import com.itlong.cloud.POJO.PO.PropertyParkCouponPO;
import com.itlong.cloud.POJO.VO.property.PropertyParkCouponGetOneVO;
import com.itlong.cloud.POJO.VO.property.PropertyParkCouponGetPageVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;

/**
 * <desc>
 *      智慧停车-停车优惠券管理服务层接口
 * </desc>
 *
 * @createDate 2018/11/06
 */
public interface IPropertyParkCouponService {

    /**
     * <desc>
     *      获取单个优惠券信息
     * </desc>
     *
     * @param parkCouponId 优惠券id
     * @return 单个优惠券信息
     * @author wangzhi
     * @createDate 2018/11/06
     */
    PropertyParkCouponGetOneVO getOneCoupon(String parkCouponId) throws Exception;

    /**
     * <desc>
     *      分页获取优惠券
     * </desc>
     *
     * @param propertyParkCouponGetPageDTO 分页获取优惠券DTO
     * @return 分页获取优惠券结果
     * @author wangzhi
     * @createDate 2018/11/06
     */
    Page<PropertyParkCouponGetPageVO> getCouponPage(PropertyParkCouponGetPageDTO propertyParkCouponGetPageDTO) throws Exception;

    /**
     * <desc>
     *      获取项目未使用的优惠券数量
     * </desc>
     *
     * @param projectId 项目id
     * @return 项目未使用的优惠券数量
     * @author wangzhi
     * @createDate 2018/11/06
     */
    Integer getAvailableCouponCount(String projectId);

    /**
     * <desc>
     *      生成优惠券
     * </desc>
     *
     * @param propertyParkCouponSaveDTO 生成优惠券DTO
     * @return 生成的优惠券
     * @author wangzhi
     * @createDate 2018/11/06
     */
    List<PropertyParkCouponPO> saveCoupon(PropertyParkCouponSaveDTO propertyParkCouponSaveDTO) throws Exception;

    /**
     * <desc>
     *      修改优惠券
     * </desc>
     *
     * @param propertyParkCouponUpdateDTO 修改优惠券DTO
     * @return 受影响的行数
     * @author wangzhi
     * @createDate 2018/11/07
     */
    Integer updateCoupon(PropertyParkCouponUpdateDTO propertyParkCouponUpdateDTO) throws Exception;

    /**
     * <desc>
     *      删除优惠券
     * </desc>
     *
     * @param ids 优惠券id，多个用英文","相连
     * @return 1-成功 other-失败
     * @author wangzhi
     * @createDate 2018/11/07
     */
    Integer deleteCoupons(String ids) throws Exception;

    /**
     * <desc>
     *      获取导出优惠券
     * </desc>
     *
     * @param propertyParkCouponGetPageDTO 查询参数
     * @return 导出优惠券集合
     * @author wangzhi
     * @createDate 2018/11/07
     */
    List<PropertyParkCouponGetPageVO> getExportData(PropertyParkCouponGetPageDTO propertyParkCouponGetPageDTO) throws Exception;
}
